package com.bjpowernode.validation.validator;

/**
 *
 */

import com.bjpowernode.validation.annotation.Password;
import jakarta.validation.ConstraintValidator;
import jakarta.validation.ConstraintValidatorContext;
import org.springframework.util.StringUtils;

/**
 * 自定义的注解@Password验证的处理
 */
public class PasswordValidator implements ConstraintValidator<Password, String> {

    //required：要求的，密码是否是必须的（也就是密码不为空，true表示密码不为空，false可以为空）
    private boolean required;
    //密码最小长度
    private int min;
    //密码最大长度
    private int max;

    @Override
    public void initialize(Password constraintAnnotation) {
        this.required = constraintAnnotation.required();
        this.min = constraintAnnotation.min();
        this.max = constraintAnnotation.max();
    }

    @Override
    public boolean isValid(String password, ConstraintValidatorContext constraintValidatorContext) {
        if (required) { //如果required=true，那么就要求密码必须是6-16为
            if (StringUtils.hasText(password) && (password.length() >= 6 && password.length() <= 16)) {
                return true; //返回true表示验证通过，返回false表示验证未通过
            } else {
                return false;
            }
        } else {
            if (StringUtils.hasText(password)) {
                if (password.length() >= 6 && password.length() <= 16) {
                    return true;
                } else {
                    return false;
                }
            } else {
                return true;
            }
        }
    }
}
